package solution;

/**
 * <a href="https://www.nowcoder.com/practice/22243d016f6b47f2a6928b4313c85387?tpId=13&&tqId=11162&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking">
 * JZ9 跳台阶扩展问题</a>
 *
 * @author or2
 * @Description 一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶(n为正整数)总共有多少种跳法。
 * @create 2021年09月08日 时间: 20:51
 */
public class JumpFloorII {
    public int jumpFloorII(int target) {
        switch (target) {
            case 0:
                return 0;
            case 1:
                return 1;
            case 2:
                return 2;
        }

        int[] ans = new int[target];
        ans[0] = 1;
        ans[1] = 2;
        for (int i = 2; i < target; i++) {
            ans[i] = ans[i - 1] + ans[i - 1];
        }

        return ans[target - 1];
    }
}
